﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class inventarioController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
//        //
//        // GET: /inventario/
//        public ActionResult IndexByParent(int id)
//        {
//            var query = entidades.INVENTARIOs.Where(inv => inv.IdInventarioPadre == id);
//            var result = (from inv in query.OrderBy(inv => inv.DescripcionProducto)
//                          join m in entidades.MARCAs on inv.IdMarca equals m.IdMarca into lm
//                          from y in lm.DefaultIfEmpty()
//                          select new
//                          {
//                              IdInventario = inv.IdInventario,
//                              DescripcionProducto = inv.DescripcionProducto,
//                              IdMarca = inv.IdMarca,
//                              NomMarca = (y == null ? String.Empty : y.Descripcion),
//                              Codigo = inv.Codigo

//                          }).ToList();
//            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
//        }
//        public ActionResult IndexById(int id)
//        {
//            //string area = Convert.ToString(Request.QueryString["query"]);

//            var query = entidades.INVENTARIOs
//                .Where(a => a.IdInventario == id);
//            //if (!String.IsNullOrEmpty(area))
//            //{
//            //    query = query.Where(a => (a.Nombre).ToUpper().Contains(area.ToUpper()));
//            //}
//            var result = (from inv in query.ToList()
//                          join py in entidades.PROYECTOes on inv.IdProyecto equals py.IdProyecto
//                          join resp in entidades.RESPONSABLEINVENTARIOs on inv.IdInventario equals resp.IdInventario
//                          where resp.Activo == true
//                          join ps in entidades.PERSONALs on resp.IdPersonal equals ps.IdPersonal

//                          join cc in entidades.CCOSTOes on inv.IdCCosto equals cc.IdCCosto into lcc
//                          from v in lcc.DefaultIfEmpty()

//                          join ctad in entidades.PLANCONTABLEs on inv.IdPlanDepreciacion equals ctad.IdPlan into lctad
//                          from w in lctad.DefaultIfEmpty()

//                          join ub in entidades.UBICACIONs on inv.IdUbicacion equals ub.IdUbicacion
//                          join cat in entidades.CATALOGOes on inv.IdCatalogo equals cat.IdCatalogo
//                          join cla in entidades.CLASIFICACIONs on cat.IdClasificacionGeneral equals cla.IdClasificacion
//                          join plc in entidades.PLANCONTABLEs on cla.IdPlan equals plc.IdPlan
//                          join pc in entidades.PROVEEDORCLIENTEs on inv.IdProveedorCliente equals pc.IdProveedorCliente into lpc
//                          from x in lpc.DefaultIfEmpty()

//                          join m in entidades.MARCAs on inv.IdMarca equals m.IdMarca into lm
//                          from y in lm.DefaultIfEmpty()

//                          join td in entidades.TIPODOCUMENTOes on inv.IdTipoDocumento equals td.IdTipoDocumento into ltd
//                          from z in ltd.DefaultIfEmpty()

//                          join edi in entidades.ESTADODELINVENTARIOs on inv.IdInventario equals edi.IdInventario
//                          where edi.Vigente == true
//                          join ei in entidades.ESTADOINVENTARIOs on edi.IdEstadoInventario equals ei.IdEstadoInventario
//                          select new
//                          {
//                              IdInventario = inv.IdInventario,
//                              IdProyecto = inv.IdProyecto,
//                              CodigoProyecto = py.Codigo,
//                              CCosto = (v == null ? String.Empty : v.Codigo),
//                              IdCCosto = inv.IdCCosto,
//                              IdUbicacion = inv.IdUbicacion,
//                              NomUbicacion = ub.NomUbicacion,
//                              IdCatalogo = inv.IdCatalogo,
//                              Catalogo = cat.Descripcion,
//                              Cuenta = plc.Codigo,
//                              CtaDep = (w == null ? String.Empty : w.Codigo),
//                              IdCtaDep = inv.IdPlanDepreciacion,
//                              IdProveedorCliente = inv.IdProveedorCliente,
//                              RazonSocial = (x == null ? String.Empty : x.RazonSocial),
//                              Ruc = (x == null ? String.Empty : x.Ruc),
//                              Ejercicio = inv.Ejercicio,
//                              IdEjercicio = inv.Ejercicio,
//                              Mes = mesencadena(Convert.ToInt32(inv.Mes)),
//                              IdMes = inv.Mes,
//                              FechaIngreso = string.Format("{0:d}", inv.FechaIngreso),
//                              DescripcionProducto = inv.DescripcionProducto,
//                              IdTipoDocumento = inv.IdTipoDocumento,
//                              NomTipoDocumento = (z == null ? String.Empty : z.Nombre),
//                              Nrodocumento = inv.Nrodocumento,
//                              IdMarca = inv.IdMarca,
//                              NomMarca = (y == null ? String.Empty : y.Descripcion),
//                              Serie = inv.Serie,
//                              Motor = inv.Motor,
//                              Placa = inv.Placa,
//                              Validado = inv.Validado,
//                              Codigo = inv.Codigo,
//                              Costo = inv.Costo,
//                              Depreciacion = DepAcumulada(inv.IdInventario),
//                              Cantidad = inv.Cantidad,
//                              Observacion = inv.Observacion,
//                              ApeNombre = ps.ApePaterno.Trim() + " " + ps.ApeMaterno.Trim() + " " + ps.Nombres,
//                              IdPersonal = ps.IdPersonal,
//                              IdResponsableInventario = resp.IdResponsableInventario,
//                              IdDepreciacion = UltDepreciacion(inv.IdInventario),
//                              IdEstadoDelInventario = edi.IdEstadoDelInventario,
//                              NomEstado = ei.NomEstado,
//                              IdEstadoInventario = ei.IdEstadoInventario,
//                              Donacion = Convert.ToBoolean(inv.Donacion),  

//                          }).ToList();

//            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
//        }

//        public ActionResult Index()
//        {
//            int start = Convert.ToInt32(Request.QueryString["start"]);
//            int limit = Convert.ToInt32(Request.QueryString["limit"]);

//            string glosa = Convert.ToString(Request.QueryString["query"]);

//            var query = entidades.INVENTARIOs
//                .Where(a => a.IdInventarioPadre == null);

//            if (!String.IsNullOrEmpty(glosa))
//            {
//                query = query.Where(a => (a.DescripcionProducto).ToUpper().Contains(glosa.ToUpper()));
//            }

//            var result = (from inv in query.OrderBy(a => a.IdInventario).Skip(start).Take(limit).ToList()
//                          join py in entidades.PROYECTOes on inv.IdProyecto equals py.IdProyecto
//                          join resp in entidades.RESPONSABLEINVENTARIOs on inv.IdInventario equals resp.IdInventario
//                          where resp.Activo == true
//                            join ps in entidades.PERSONALs on resp.IdPersonal equals ps.IdPersonal

//                          join cc in entidades.CCOSTOes on inv.IdCCosto equals cc.IdCCosto into lcc
//                          from v in lcc.DefaultIfEmpty()

//                          join ctad in entidades.PLANCONTABLEs on inv.IdPlanDepreciacion equals ctad.IdPlan into lctad
//                          from w in lctad.DefaultIfEmpty()

//                          join ub in entidades.UBICACIONs on inv.IdUbicacion equals ub.IdUbicacion
//                          join cat in entidades.CATALOGOes on inv.IdCatalogo equals cat.IdCatalogo
//                            join cla in entidades.CLASIFICACIONs on cat.IdClasificacionGeneral equals cla.IdClasificacion
//                            join plc in entidades.PLANCONTABLEs on cla.IdPlan equals plc.IdPlan
//                          join pc in entidades.PROVEEDORCLIENTEs on inv.IdProveedorCliente equals pc.IdProveedorCliente into lpc
//                          from x in lpc.DefaultIfEmpty()

//                          join m in entidades.MARCAs on inv.IdMarca equals m.IdMarca into lm
//                          from y in lm.DefaultIfEmpty()

//                          join td in  entidades.TIPODOCUMENTOes on inv.IdTipoDocumento equals td.IdTipoDocumento into ltd
//                          from z in ltd.DefaultIfEmpty()

//                          join edi in entidades.ESTADODELINVENTARIOs on inv.IdInventario equals edi.IdInventario
//                          where edi.Vigente == true
//                            join ei in entidades.ESTADOINVENTARIOs on edi.IdEstadoInventario equals ei.IdEstadoInventario
//                          select new
//                          {
//                              IdInventario = inv.IdInventario,
//                              IdProyecto = inv.IdProyecto,
//                              CodigoProyecto = py.Codigo,
//                              CCosto = (v == null ? String.Empty : v.Codigo),
//                              IdCCosto = inv.IdCCosto,
//                              IdUbicacion = inv.IdUbicacion,
//                              NomUbicacion = ub.NomUbicacion,
//                              IdCatalogo = inv.IdCatalogo,
//                              Catalogo = cat.Descripcion,
//                              Cuenta = plc.Codigo,
//                              CtaDep = (w == null ? String.Empty : w.Codigo),
//                              IdCtaDep = inv.IdPlanDepreciacion,
//                              IdProveedorCliente = inv.IdProveedorCliente,
//                              RazonSocial = (x == null ? String.Empty : x.RazonSocial),
//                              Ruc = (x == null ? String.Empty : x.Ruc),
//                              Ejercicio = inv.Ejercicio,
//                              Mes = inv.Mes,
//                              FechaIngreso = string.Format("{0:d}", inv.FechaIngreso),
//                              DescripcionProducto = inv.DescripcionProducto,
//                              IdTipoDocumento = inv.IdTipoDocumento,
//                              TipoDocumento = (z == null ? String.Empty : z.Nombre),
//                              Nrodocumento = inv.Nrodocumento,
//                              IdMarca = inv.IdMarca,
//                              NomMarca = (y == null ? String.Empty : y.Descripcion),
//                              Serie = inv.Serie,
//                              Motor = inv.Motor,
//                              Placa = inv.Placa,
//                              Estado = ei.NomEstado,
//                              Validado = inv.Validado,
//                              Codigo = inv.Codigo,
//                              Costo = inv.Costo,
//                              Depreciacion = DepAcumulada(inv.IdInventario),
//                              Cantidad = inv.Cantidad,
//                              Observacion = inv.Observacion,
//                              ApeNombre = ps.ApePaterno.Trim() + " " + ps.ApeMaterno.Trim() + " " + ps.Nombres,
//                              IdPersonal = ps.IdPersonal,
//                              IdResponsableInventario = resp.IdResponsableInventario,
//                              IdDepreciacion = UltDepreciacion(inv.IdInventario),
//                              IdEstadoDelInventario = edi.IdEstadoDelInventario,
//                              Donacion = Convert.ToBoolean(inv.Donacion),

//                          }).ToList();

//            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
//        }

//        public decimal DepAcumulada(int id)
//        {
//            var query = entidades.DEPRECIACIONs.Where(dp => dp.IdInventario == id);

//            var mes = query.Sum(dp =>dp.Monto);

//            return Convert.ToDecimal(mes);
//        }

//        public string UltDepreciacion(int id)
//        {
//            try
//            {
//                var query = entidades.DEPRECIACIONs.Single(dp => dp.IdInventario == id);
//                return Convert.ToString(query.IdDepreciacion);//Convert.ToDecimal(quer);
//            }
//            catch {
//                return null;
//            }
//        }

//        //
//        // GET: /inventario/Details/5

//        public ActionResult Details(int id)
//        {
//            return View();
//        }

//        //
//        // GET: /inventario/Create

//        //public ActionResult Create()
//        //{
//        //    return View();
//        //}

//        //
//        // POST: /inventario/Create

//        //[HttpPost]
//        //public ActionResult Create(FormCollection collection)
//        //{
//        //    string strResponse = String.Empty;
//        //    int IdUsuario = Convert.ToInt32(Session["IdPersonal"].ToString());

//        //    //parametros Plan
//        //    Decimal CostoProducto = Convert.ToDecimal(Request.Form["Costo"]);
//        //    int IdCatalogo = Convert.ToInt32(Request.Form["IdCatalogo"]);

//        //    string Costo = Convert.ToString(Request.Form["Depreciacion"]);
//        //    int IdEstadoInventario = Convert.ToInt32(Request.Form["IdEstadoInventario"]);
//        //    int IdPersonal = Convert.ToInt32(Request.Form["IdPersonal"]);
            
//        //    decimal Depreciacion = 0;

//        //    if (!String.IsNullOrEmpty(Costo))
//        //    {
//        //        Depreciacion = Convert.ToDecimal(Costo);
//        //    }


//        //    DateTime Fecha = Convert.ToDateTime("2011/12/31");
//        //    //int IdNivelQR = Convert.ToInt32(Request.Form["IdNivelQR"]);
//        //    try
//        //    {
//        //        // TODO: Add insert logic here
//        //        var cinventario = new INVENTARIO();
//        //        if (ModelState.IsValid)
//        //        {
//        //            TryUpdateModel(cinventario, collection.ToValueProvider());

//        //            if (cinventario.Donacion == null)
//        //            {
//        //                cinventario.Donacion = false;
//        //            }

//        //            //Sacamos UIT
//        //            var uit = entidades.PARAMETROS.Single(p => p.Nombre == "UIT" && p.Estado == true);
//        //            var Catalogo = entidades.CATALOGOes.Single(c => c.IdCatalogo == IdCatalogo);
//        //            var PLanClasificacion = entidades.CLASIFICACIONs.Single(pc => pc.IdClasificacion == Catalogo.IdClasificacionGeneral);

//        //            if ((uit.Valor / 4) <= CostoProducto)
//        //            {

//        //                if (cinventario.Donacion == true)
//        //                {
//        //                    cinventario.IdPlanCuenta = PLanClasificacion.IdPlanDonacion;
//        //                }
//        //                else
//        //                {
//        //                    cinventario.IdPlanCuenta = PLanClasificacion.IdPlanActivoFijo;
//        //                    var PLanDpre = entidades.PLANCONTABLEs.Single(pc => pc.IdPlan == PLanClasificacion.IdPlanActivoFijo);
//        //                    cinventario.IdPlanDepreciacion = PLanDpre.IdPlanDepreciacion;
//        //                }

//        //            }
//        //            else
//        //            {
//        //                if (cinventario.Donacion == true)
//        //                {
//        //                    cinventario.IdPlanCuenta = PLanClasificacion.IdPlanDonacion;
//        //                }
//        //                else
//        //                {
//        //                    cinventario.IdPlanCuenta = PLanClasificacion.IdPlan;
//        //                }
//        //            }

//        //            cinventario.Usuario = IdUsuario;
//        //            cinventario.Creado = DateTime.Now;
//        //            cinventario.Validado = false;
//        //            entidades.AddToINVENTARIOs(cinventario);
//        //            //cinvqre.Editable = true;
//        //            entidades.SaveChanges();
//        //            entidades.INVInsertEstadoInventario(cinventario.IdInventario, DateTime.Now, IdEstadoInventario);
//        //            entidades.INVInsertDepreciacion(cinventario.IdInventario, Depreciacion, Fecha);
//        //            entidades.INVInsertResponsable(cinventario.IdInventario, IdPersonal, DateTime.Now);
//        //            strResponse = "{success: true,msg:'Registro Creado Correctamente'}";
//        //            return Content(strResponse);
//        //        }
//        //        strResponse = "{success: false,msg:'Fallo en la Creación'}";
//        //        return Content(strResponse);
//        //    }
//        //    catch
//        //    {
//        //        strResponse = "{success: false,msg:'Fallo en la Creación'}";
//        //        return Content(strResponse);
//        //    }
//        //}
        
//        //
//        // GET: /inventario/Edit/5
 
//        //public ActionResult Edit(int id)
//        //{
//        //    return View();
//        //}

//        //
//        // POST: /inventario/Edit/5

//        [HttpPost]
//        public ActionResult Edit(int id, FormCollection collection)
//        {
//            string strResponse = String.Empty;

//            //int IdUbicacion = Convert.ToInt32(Request.Form["IdUbicacion"]);

//            int IdUsuario = Convert.ToInt32(Session["IdPersonal"].ToString());
//            Decimal Costo = Convert.ToDecimal(Request.Form["Depreciacion"]);
//            int IdEstadoInventario = Convert.ToInt32(Request.Form["IdEstadoInventario"]);

//            //parametros Plan
//            Decimal CostoProducto = Convert.ToDecimal(Request.Form["Costo"]);
//            int IdCatalogo = Convert.ToInt32(Request.Form["IdCatalogo"]);
            
//            int IdPersonal = Convert.ToInt32(Request.Form["IdPersonal"]);
//            int IdResponsableInventario = Convert.ToInt32(Request.Form["IdResponsableInventario"]);
//            int IdEstadoDelInventario = Convert.ToInt32(Request.Form["IdEstadoDelInventario"]);
//            int IdDepreciacion = Convert.ToInt32(Request.Form["IdDepreciacion"]);

//            bool Donacion = Convert.ToBoolean(Request.Form["Donacion"]);

//            var eInv = entidades.INVENTARIOs.Single(p => p.IdInventario == id);            
//            try
//            {
//                // TODO: Add update logic here
//                if (ModelState.IsValid)
//                {
//                    TryUpdateModel(eInv);
//                    //Sacar Cuenta A la que pertenece el Inventario

//                    //Sacamos UIT
//                    var uit = entidades.PARAMETROS.Single(p => p.Nombre == "UIT" && p.Estado == true);
//                    var Catalogo = entidades.CATALOGOes.Single(c => c.IdCatalogo == IdCatalogo);
//                    var PLanClasificacion = entidades.CLASIFICACIONs.Single(pc => pc.IdClasificacion == Catalogo.IdClasificacionGeneral);

//                    if ((uit.Valor / 4) <= CostoProducto)
//                    {
                        
//                        if (Donacion == true)
//                        {
//                            eInv.IdPlanCuenta = PLanClasificacion.IdPlanDonacion;
//                        }
//                        else
//                        {
//                            eInv.IdPlanCuenta = PLanClasificacion.IdPlanActivoFijo;
//                            var PLanDpre = entidades.PLANCONTABLEs.Single(pc => pc.IdPlan == PLanClasificacion.IdPlanActivoFijo);
//                            eInv.IdPlanDepreciacion = PLanDpre.IdPlanDepreciacion;
//                        }

//                    }
//                    else {
//                        if (Donacion == true)
//                        {
//                            eInv.IdPlanCuenta = PLanClasificacion.IdPlanDonacion;
//                        }
//                        else {
//                            eInv.IdPlanCuenta = PLanClasificacion.IdPlan;
//                        }
//                    }

//                    eInv.Donacion = Donacion;
//                    entidades.SaveChanges();

//                    entidades.INVEditResponsable(IdResponsableInventario, IdPersonal);
//                    entidades.INVEditEstadoInventario(IdEstadoDelInventario, IdEstadoInventario);
//                    entidades.INVEditDepreciacion(IdDepreciacion, Costo);

//                    strResponse = "{success: true,msg:'Registro Creado Correctamente'}";
//                    return Content(strResponse);

//                }
//                strResponse = "{success: false,msg:'Fallo en la Creación'}";
//                return Content(strResponse);
//            }
//            catch
//            {
//                return View();
//            }
//        }

//        //
//        // GET: /inventario/Delete/5
 
//        public ActionResult Delete(int id)
//        {
//            return View();
//        }

//        //
//        // POST: /inventario/Delete/5

//        [HttpPost]
//        public ActionResult Delete(int id, FormCollection collection)
//        {
//            try
//            {
//                // TODO: Add delete logic here
 
//                return RedirectToAction("Index");
//            }
//            catch
//            {
//                return View();
//            }
//        }
        public ActionResult TreeMenu()
        {
            string response = null;
            response = "[{id:'1',text:'Estado Inventario',leaf:true, hrefTarget:'estadoinventario/Index'}," +
                "{ text: 'Ubicacion', id : '2',expanded: false,leaf:true, hrefTarget:'ubicacion/Index' }," +
                //"{ text: 'Denunciados', id : '3',expanded: false,leaf:true, hrefTarget:'involucradodenunciado/Index' }," +
                //"{ text: 'Riesgo', id : '4',expanded: false,leaf:true, hrefTarget:'nivelinvolucrado/Index' }," +
                //"{ text: 'Nivel', id : '5',expanded: false,leaf:true, hrefTarget:'riesgo/Index' }," +
                "{ text: 'Inventario Equipos', id : '3',expanded: false,leaf:true, hrefTarget:'inventario/Index' }," +
                "{ text: 'Inventario Biologico', id : '4',expanded: false,leaf:true, hrefTarget:'inventariob/Index' }," +
                "{ text: 'Venta Semovientes', id : '5',expanded: false,leaf:true, hrefTarget:'semovientes/Index' }]";
            return Content(response);
        }

//        public string mesencadena(int id)
//        {
//            var mes = "";
//            switch (id)
//            {
//                case 1: mes = "ENERO"; break;
//                case 2: mes = "FEBRERO"; break;
//                case 3: mes = "MARZO"; break;
//                case 4: mes = "ABRIL"; break;
//                case 5: mes = "MAYO"; break;
//                case 6: mes = "JUNIO"; break;
//                case 7: mes = "JULIO"; break;
//                case 8: mes = "AGOSTO"; break;
//                case 9: mes = "SETIEMBRE"; break;
//                case 10: mes = "OCTUBRE"; break;
//                case 11: mes = "NOVIEMBRE"; break;
//                case 12: mes = "DICIEMBRE"; break;

//            }
//            return mes;
//        }
    }
}
